package main.java.design.mdediator;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *     实现中介者接口，定义一个 List 来管理同事对象，协调各个同事角色之间的交互关系，因此它依赖于同事角色。
 * </p>
 *
 * @author : wangdejian
 * @version 1.0
 * @date : 2020/6/22 22:01
 */
public class ConcreteMediator extends Mediator {
    //定义一个 List 来管理同事对象
    private List<Colleague> list;

    public ConcreteMediator() {
        list = new ArrayList<>();
    }

    // 注册同事
    @Override
    public void register(Colleague colleague) {
        if (!list.contains(colleague)) {
            colleague.setMediator(this);
            list.add(colleague);
        }
    }

    // 通知同事
    @Override
    public void relay(Colleague colleague) {
        // 转发给其他同事
        list.forEach(x -> {
            if (!x.equals(colleague)) {
                x.receive();
            }
        });
    }
}
